import datetime as dt
import logging.config
import os


class LogUtils:

    @staticmethod
    def init():
        now_time = dt.datetime.now().strftime('%F-%T')
        now_time = now_time.replace(':', '-')
        logging_config = {
            'version': 1,
            'disable_existing_loggers': False,
            'formatters': {
                'standard': {
                    'format': '[%(asctime)s][%(filename)s:%(lineno)d][%(levelname)s]%(message)s'
                },
                'simple': {
                    'format': '[%(asctime)s][%(levelname)s]%(message)s'
                },
            },
            'handlers': {
                'console': {
                    'level': 'DEBUG',
                    'class': 'logging.StreamHandler',
                    'formatter': 'simple'
                },
                'default': {
                    'level': 'DEBUG',
                    'class': 'concurrent_log_handler.ConcurrentRotatingFileHandler',  # 保存到文件
                    'formatter': 'standard',
                    'filename': os.path.join('logs', 'debug'+now_time+'.log'),  # 日志文件
                    'maxBytes': 1024 * 1024 * 3,  # 日志大小 3M
                    'backupCount': 10,  # 表示日志文件的保留个数
                    'encoding': 'utf-8',  # 日志文件的编码，再也不用担心中文log乱码了
                },
                'info': {
                    'level': 'INFO',
                    'class': 'concurrent_log_handler.ConcurrentRotatingFileHandler',  # 保存到文件
                    'formatter': 'simple',
                    'filename': os.path.join('logs', 'info.log'),  # 日志文件
                    'maxBytes': 1024 * 1024 * 3,  # 日志大小 3M
                    'backupCount': 10,  # 表示日志文件的保留个数
                    'encoding': 'utf-8',  # 日志文件的编码，再也不用担心中文log乱码了
                },
            },
            'loggers': {
                'bilibili-danmuji': {
                    'handlers': ['console', 'default', 'info'],
                    'level': 'DEBUG',
                    'propagate': False
                },
            }
        }
        logging.config.dictConfig(logging_config)